3.2 Терминология

Прежде чем мы сможем обсудить многие детали действия TCP протокола, нам необходимо ввести подробную терминологию. Для поддержания TCP соединения необходимо иметь несколько переменных. Мы решили, что эти переменные будут помещены в соответствующую запись - блок управления передачей (Transmission Control Block – TCB). Среди переменных блока TCB имеются номера местного и чужого сокетов, флаги безопасности и приоритета для данного соединения, указатели буферов посылки и получения, указатели текущего сегмента и очереди повторной посылки. Кроме всего этого в TCB имеются несколько переменных, имеющих отношение к номерам очередей отправителя и получателя.

Отправление

SND.UNA - посылка неподтверждена
SND.NXT - послать следующий сегмент
SND.WND - отправить окно
SND.UP  - отправить срочный указатель
SND.WL1 - номер очереди сегмента, 
	  использованный для обновления последнего окна
SND.WL2 - номер подтверждения в сегменте, используемый 
	  для обновления последнего окна
ISS     - первоначальный номер очереди отправления

Получение

RCV.NXT - получить следующий сегмент
RCV.WND - получить окно
RCV.UP  - получить срочный указатель
IRS     - первоначальный номер очереди получения

Нижеприведенные диаграммы могут помочь связать некоторые из этих переменных с местом в очереди

Очередь отправления

1. - старые номера очереди, которые получили подтверждение

2. - номера очереди для данных, не получивших подтверждения

3. - номера очереди, допущенные к новой передаче

4. - следующие номера очереди, чья передача еще не разрешена

Очередь получения

1. - старые номера очереди, которые получили подтверждение

2. - номера очереди, допущенные к очередному этапу получения

3. - следующие номера очереди, еще не получившие разрешения

В обсуждении также часто используются некоторые переменные,берущие свое значение из полей очередного сегмента. Переменные для очередного сегмента.

SEG.SEQ - номер очереди для сегмента

SEG.ACK - номер подтверждения для сегмента

SEG.LEN - длина сегмента

SEG.WND - окно для сегмента

SEG.UP - срочный указатель для сегмента

SEG.PRC - приоритет для сегмента

Соединение во время функционирования проходит через серии промежуточных состояний. Это состояния LISTEN, SYN-SENT, SYN-RECEIVED, ESTABLISHED, FIN-WAIT-1, FIN-WAIT-2, CLOSE-WAIT, CLOSING, LAST-ACK, TIME-WAIT, а также фиктивное состояние CLOSED. Состояние CLOSED является фиктивным, поскольку оно представляет состояние, когда не существует блока TCP, а потому и нет соединения. Краткое описание состояний:

LISTEN - Ожидание запроса на соединение со стороны чужих портов и программ TCP

SYN-SENT - Ожидание парного запроса на установление соединения. С нашей стороны запрос уже сделан.

SYN-RECEIVED - Ожидание подтверждения после того, как запрос соединения уже принят и отправлен.

ESTABLISHED - Состояние открытого соединения, принимаемые данные представить пользователю. Это нормальное состояние соединения в фазе передачи данных.

FIN-WAIT-1 - Ожидание запроса от чужой программы TCP, или подтверждения ранее отправленного запроса на закрытие соединения.

FIN-WAIT-2 - Ожидание запроса на закрытие соединения со стороны чужой программы TCP.

CLOSE-WAIT - Ожидание запроса на закрытие соединения со стороны своего клиента.

CLOSING - Ожидание подтверждения со стороны чужой программы TCP запроса о закрытии соединения.

LAST-ACK - Ожидание запроса на закрытие соединения, ранее отправленного чужой программе TCP (запрос включал также подтверждение получения чужого запроса на закрытие соединения).

TIME-WAIT - Ожидание когда истечет достаточное количество времени и можно быть уверенным, что чужая программа TCP получила подтверждение своего запроса на закрытие соединения.

CLOSED - Состояние полного отсутствия соединения.

Соединение TCP переходит с одного состояния на другое в ответ на события. Событие - это запросы клиента (открытие, посылка, получение, закрытие, отказ, получение состояния соединения), приход сегментов, и особенно тех, которые содержат флаги SYN, ACK, RST и FIN, а также истечение выделенного времени.

Диаграмма состояний на рисунке 6 иллюстрирует лишь смену состояний, а также вызвавшие это события, производимые действия, но не адреса, условия ошибок, не действия, не связанные прямо с изменением состояния. Более подробные сведения о действиях программы протокола TCP в ответ на события приведены в последней главе. Замечание. Данная диаграмма является лишь сводной, но не должна восприниматься как полная спецификация.

Hosted by uCoz